草庐IT

iOS 多线程1 --任务与队列

全部标签

ruby - 我怎样才能加快 Ruby/Rake 任务

rake--tasks运行大约需要18秒。这只是加载所有任务所需的时间,因此我定义的任何任务都至少需要这段时间来运行:$timerake--tasksrakedb:clean#Cleaningupdatabaserakepassenger:restart#RestartApplicationrakespec#Runspecsreal0m18.816suser0m7.306ssys0m5.665s我的Rakefile:$::spec知道为什么rake需要很多次吗?谢谢 最佳答案 尝试spring命令行如下所示:springrake-T

ruby-on-rails - Heroku 无法检测到 rake 任务(LoadError : cannot load such file -- rspec/core/rake_task)

我正在使用travisCI部署到heroku,但出现此错误。这才刚刚开始。我有基本的railsRakefile,我有一个看起来像这样的文件,否则travis无法检测到rake任务:#lib\tasks\spec.rakerequire'rspec/core/rake_task'RSpec::Core::RakeTask.newtask:default=>:spec为什么会专门为heroku显示此错误?编辑-我有一个与给出的(更好的)答案相似的版本:beginrequire'rspec/core/rake_task'desc"Runallexamples"RSpec::Core::Rak

ruby - RSpec:使用线程进行测试

在RSpec中,我有创建新线程的函数,并在该线程内执行一些操作——在我的例子中,调用TCPSocket#readline。这是现在的功能:defreadThread.newdowhileline=@socket.readline#TODO:stuffendendend由于线程调度,如果这样写我的测试会失败:it"readsfromsocket"dosubject.socket.should_receive(:readline)subject.readend目前我知道解决这个问题的唯一方法是使用sleep0.1。有没有办法适本地延迟测试,直到该线程运行? 最佳

ruby - 使用接受参数作为先决条件的 rake 任务

根据http://rake.rubyforge.org/files/doc/rakefile_rdoc.html,您可以创建一个接受参数并且也有先决条件的任务:task:name,[:first_name,:last_name]=>[:pre_name]do|t,args|但是如果:pre_name是一个也接受参数的任务呢?将参数传递给:pre_name作为先决条件时的语法是什么? 最佳答案 它实际上非常简单-:pre任务将接收与原始任务相同的参数。您需要做的就是确保签名相似-例如,如果第一个任务接收到:a,:b,则:pre任务也需

ruby - 仅在特定服务器上调用 delayed_job capistrano 任务

我有一个专门用于delayed_job任务的服务器。我想在仅此服务器上启动、停止和重新启动delayed_jobworker。我正在使用delayed_job提供的Capistrano食谱。当我只有1个服务器时,这是我的配置:before"deploy:restart","delayed_job:stop"after"deploy:restart","delayed_job:start"after"deploy:stop","delayed_job:stop"after"deploy:start","delayed_job:start"现在我想让这些Hook仅应用于单独的delayed

ruby - 订阅一个队列,收到1条消息,然后取消订阅

我有一个场景,我需要极快地分发和处理作业。我将在队列中快速填充大约45个作业,我可以同时处理大约20个(5台机器,每台机器4个内核)。每项工作花费的时间长短不一,而且垃圾收集使事情变得复杂,因此我需要能够让消费者离线以进行垃圾收集。目前,我的一切都与pop一起工作(每个消费者每5毫秒弹出一次)。这似乎是不可取的,因为它转换为每秒600个pop请求到rabbitmq。如果有一个类似于订阅的pop命令,但只针对一条消息,我会很高兴。(进程会阻塞,等待来自rabbitMQ连接的输入,通过类似于Kernel.select的东西)我试图欺骗AMQPgem做这样的事情,但它不起作用:我似乎无法取消

ruby-on-rails - 在 rake 任务中打印到屏幕

我有一个长时间运行的rake任务。我时不时地在屏幕上打印更新,让我知道任务已经完成了多长时间。puts"Almostthere..."我的问题是所有puts语句似乎都缓冲在某处,直到任务完成后才会打印到屏幕上。届时,它们将被一次性全部打印出来。有什么方法可以强制他们在任务运行时打印吗? 最佳答案 STDOUT.sync=true 关于ruby-on-rails-在rake任务中打印到屏幕,我们在StackOverflow上找到一个类似的问题: https://

ruby - 在 Rakefile 中设置 rspec 2 任务

我有一个看起来像这样的Rakefile:require'rspec/core/rake_task'desc"RunallRSpectests"RSpec::Core::RakeTask.new(:spec)虽然这不起作用。例如,如果我尝试运行“rake-T”,我得到:code/projects/bellybuster[master]%rake-T--trace(in/Users/craig/code/projects/bellybuster)rakeaborted!nosuchfiletoload--rspec/core/rake_task/Users/craig/.rvm/rubie

ruby - 两个Ruby线程相关的问题

第一个:如何创建一个不会立即启动的线程。如果我在没有block的情况下使用initialize,则会引发异常。如何将Thread子类化,以便我可以添加一些自定义属性,但保留与Thread基类相同的功能?我也不想为此使用initialize(&block)方法。为了更好地说明这一点:第一个问题:x=Thread.newx.run={#thisshouldhappeninsidethethread}x.start#iwanttomanuallystartthethread对于第二个:x=MyThread.newx.my_attribute=some_valuex.run={#thissho

ruby-on-rails - rspec 中的多线程 ActiveRecord 请求

我正在尝试在测试中重新创建竞争条件,以便尝试一些解决方案。我发现在我在测试中创建的线程中,ActiveRecord总是为计数返回0,为查找返回nil。例如,表“foos”中有3行:it"whatever"doputsFoo.count5.timesdoThread.newdoputsFoo.countendendend将打印300000test.log显示了预期的查询,预期的6次:SELECTcount(*)AScount_allFROM`active_agents`知道这里发生了什么吗? 最佳答案 我假设ActiveRecord为